export enum ErrorEnum {
  /**
   * 与 eval() 有关
   */
  eval,
  /**
   * 数值变量或参数超出其有效范围
   */
  range,
  /**
   * 无效引用
   */
  reference,
  /**
   * eval()在解析代码的过程中发生的语法错误
   */
  syntax,
  /**
   * 变量或参数不属于有效类型
   */
  type,
  /**
   * 给 encodeURI()或  decodeURl()传递的参数无效
   */
  uri,
  /**
   * 普通错误
   */
  common
}
/**
 * 抛出错误
 * @param msg 报错信息
 * @param type 类型，默认为通用
 */
export function thorwError(
  msg: string,
  type: ErrorEnum = ErrorEnum.common
): never {
  switch (type) {
    case ErrorEnum.eval:
      throw new TypeError(msg);
    case ErrorEnum.range:
      throw new RangeError(msg);
    case ErrorEnum.reference:
      throw new ReferenceError(msg);
    case ErrorEnum.syntax:
      throw new SyntaxError(msg);
    case ErrorEnum.type:
      throw new TypeError(msg);
    case ErrorEnum.uri:
      throw new URIError(msg);
    default:
      throw new Error(msg);
  }
}
